/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.cast.teseg.gui;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

/**
 *
 * @author edgarin
 */
public class GuiPrincipal extends JFrame{
    
    private JPanel izquierdo, derecho;
    private JPanel inferior;
    private JPanel superior;
    private JButton subirArchivo, borrarDatos;
    private ManejoEventos manejoEventos;
    private CanvasPorcentaje canvasPorcentaje;
        
    public JButton generarBtn;
    public JButton detenerBtn;
    public JLabel probaLb;
    public JLabel numIndLb;
    public JLabel numConLb;
    public JTextField contProb;
    public JTextField numNodos;
    public JTextField numEdges;
    public JTextField dummy;   
    public JSlider barraProb;

    public GuiPrincipal() {        
        super("TESEG");
        
        this.manejoEventos = new ManejoEventos();
        
        this.superior = new JPanel();
        this.superior.setLayout(new FlowLayout(0,20,20));
        this.izquierdo = new JPanel();        
        this.izquierdo.setLayout(new BorderLayout());
        this.derecho = new JPanel();        
        this.derecho.setLayout(new BorderLayout());
        this.inferior = new JPanel();
        this.inferior.setLayout(new FlowLayout(0,20,20));
        
        this.generarBtn = new JButton();
        this.detenerBtn = new JButton();
        this.probaLb = new JLabel();
        this.numIndLb = new JLabel();
        this.numConLb = new JLabel();
        this.contProb = new JTextField(3);
        this.numNodos = new JTextField(4);
        this.numEdges = new JTextField(6);
        this.barraProb = new JSlider (0,100,50);
        
        this.generarBtn.setText("generar");
        this.detenerBtn.setText("detener");
        this.generarBtn.addMouseListener(this.manejoEventos);
        this.detenerBtn.addMouseListener(this.manejoEventos);
        this.probaLb.setText("Probabilidad Conocidos:");
        this.numIndLb.setText("Numero de Indivuduos: ");
        this.numConLb.setText("Cant Conocidos: ");
        this.numEdges.setEditable(false);
        this.barraProb.setBorder(new TitledBorder(" (--) Probabilidad Conocidos (++)"));
        this.barraProb.addChangeListener(this.manejoEventos);
        this.numNodos.setText("10");
        this.contProb.setText("0.5");
        
        this.superior.add(this.numIndLb);
        this.superior.add(this.numNodos);
        this.superior.add(this.probaLb);
        this.superior.add(this.contProb);
        this.superior.add(this.generarBtn);
        this.superior.add(this.detenerBtn);
        this.inferior.add(this.barraProb);
        this.inferior.add(this.numConLb);
        this.inferior.add(this.numEdges);
        
        
        this.canvasPorcentaje = new CanvasPorcentaje();
        this.canvasPorcentaje.addMouseListener(this.manejoEventos);
        this.derecho.add(canvasPorcentaje, BorderLayout.CENTER);
        
        this.subirArchivo = new JButton("Subir Archivo");
        this.subirArchivo.setToolTipText("Subir archivo con el Grafo");
        this.borrarDatos = new JButton("Borrar Datos");
        this.borrarDatos.setToolTipText("Borrar datos del Grafo");
        
        this.inferior.add(this.subirArchivo);
        this.inferior.add(this.borrarDatos);
        
        this.subirArchivo.addMouseListener(this.manejoEventos);        
        this.borrarDatos.addMouseListener(this.manejoEventos);

        
        this.getContentPane().setLayout(new BorderLayout());
        
        this.getContentPane().add(this.superior, BorderLayout.NORTH);      
        this.getContentPane().add(this.inferior, BorderLayout.SOUTH);      
        this.getContentPane().add(this.derecho, BorderLayout.EAST);
        this.getContentPane().add(this.izquierdo, BorderLayout.CENTER);
        
    }
    
    //**** metodo para iniciar el frame ****//
    public void crearGui(){        
        this.manejoEventos.setGuiPrincipal(this);
        this.pack();
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(800, 700);
        this.setResizable(false);
        this.setLocationRelativeTo(null);       
    }
    
    public CanvasPorcentaje getCanvasPorcentaje(){ return this.canvasPorcentaje; }    
    
    public JPanel getPanelPorcentaje(){ return this.derecho; }
    
    public JPanel getPanelGrafo(){ return this.izquierdo; }
    
    public JButton getSubirArchivos(){ return this.subirArchivo; }

    public JButton getBorrarDatos(){return this.borrarDatos; }

    public ManejoEventos getClikeador(){ return this.manejoEventos; }    
    
    public void setMensajeError(String x){ JOptionPane.showMessageDialog(this, x);  } //*** metodo que envia un mensaje de error al isiario *** //

    public JSlider getBarraProb() { return barraProb; }

    public JButton getGenerarBtn() { return generarBtn; }

    public JButton getDetenerBtn() { return detenerBtn; }

    public JTextField getNumNodos() { return numNodos; }

    public JTextField getContProb() { return contProb; }

    public JTextField getNumEdges() { return numEdges; }
     
    
}
